package com.ruoyi.manage.article.service.impl;

import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.manage.article.entity.User;
import com.ruoyi.manage.article.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.manage.article.mapper.AuthInfoMapper;
import com.ruoyi.manage.article.domain.AuthInfo;
import com.ruoyi.manage.article.service.IAuthInfoService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;

/**
 * 用户认证管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-11-22
 */
@Service
public class AuthInfoServiceImpl implements IAuthInfoService 
{
    @Autowired
    private AuthInfoMapper authInfoMapper;

    @Autowired
    private UserService userService;
    /**
     * 查询用户认证管理
     * 
     * @param id 用户认证管理主键
     * @return 用户认证管理
     */
    @Override
    public AuthInfo selectAuthInfoById(Long id)
    {
        AuthInfo authInfo = authInfoMapper.selectAuthInfoById(id);
        //处理一下返回的地址问题
        String[] split = authInfo.getBusinessAddress().split(",");

        String address="";
        for(int i = 0; i < split.length;i++){
            String addressName = authInfoMapper.getAddressName(split[i]);
            address+=addressName;
        }
        if(StringUtils.hasText(authInfo.getBusinessAddressDetail())){
            address+=authInfo.getBusinessAddressDetail();
        }
        authInfo.setBusinessAddress(address);


        // 正则表达式，用于匹配逗号后的一位或多位数字
        String regex = ",(\\d+)"; // 注意这里的 \\d+ 表示一位或多位数字

        // 创建 Pattern 对象
        Pattern pattern = Pattern.compile(regex);

        // 创建 Matcher 对象
        Matcher matcher = pattern.matcher(authInfo.getIndustry());

        // 检查是否存在匹配
        if (matcher.find()) {
            String industryName = authInfoMapper.getIndustryName(matcher.group(1));
            authInfo.setIndustry(industryName);
        }
        return authInfo;
    }

    /**
     * 查询用户认证管理列表
     * 
     * @param authInfo 用户认证管理
     * @return 用户认证管理
     */
    @Override
    public List<AuthInfo> selectAuthInfoList(AuthInfo authInfo)
    {

        List<AuthInfo> list = authInfoMapper.selectAuthInfoList(authInfo);
        for (AuthInfo auth : list) {

            String [] split =auth.getBusinessAddress().split(",");

            String address="";
            for(int i = 0; i < split.length;i++){
                String addressName = authInfoMapper.getAddressName(split[i]);
                address+=addressName;
            }

            //如果详情有值就添加上详细信息如果没有就不添加
            if(StringUtils.hasText(auth.getBusinessAddressDetail())){
                address+=auth.getBusinessAddressDetail();
            }
            auth.setBusinessAddress(address);


            // 正则表达式，用于匹配逗号后的一位或多位数字
            String regex = ",(\\d+)"; // 注意这里的 \\d+ 表示一位或多位数字

            // 创建 Pattern 对象
            Pattern pattern = Pattern.compile(regex);

            // 创建 Matcher 对象
            Matcher matcher = pattern.matcher(auth.getIndustry());

            // 检查是否存在匹配
            if (matcher.find()) {
                String industryName = authInfoMapper.getIndustryName(matcher.group(1));
                auth.setIndustry(industryName);
            }
        }

        return list;
    }

    /**
     * 新增用户认证管理
     * 
     * @param authInfo 用户认证管理
     * @return 结果
     */
    @Override
    public int insertAuthInfo(AuthInfo authInfo)
    {
        return authInfoMapper.insertAuthInfo(authInfo);
    }

    /**
     * 修改用户认证管理
     * 
     * @param authInfo 用户认证管理
     * @return 结果
     */
    @Override
    @Transactional
    public int updateAuthInfo(AuthInfo authInfo)
    {
        int i = authInfoMapper.updateAuthInfo(authInfo);
        User user = new User();

        user.setId(authInfo.getUserId());
        //在修改之前需要根据认证表的修改状态 来更新用户表的状态
        if(authInfo.getStatus()==0){
            user.setType("1");//将用户表设置为未认证
        }else if(authInfo.getStatus()==1){
            user.setType("3");
        }else if(authInfo.getStatus()==2){
            user.setType("2");
        }

        userService.update(user);
        return i ;
    }

    /**
     * 批量删除用户认证管理
     * 
     * @param ids 需要删除的用户认证管理主键
     * @return 结果
     */
    @Override
    public int deleteAuthInfoByIds(Long[] ids)
    {
        return authInfoMapper.deleteAuthInfoByIds(ids);
    }

    /**
     * 删除用户认证管理信息
     * 
     * @param id 用户认证管理主键
     * @return 结果
     */
    @Override
    public int deleteAuthInfoById(Long id)
    {
        return authInfoMapper.deleteAuthInfoById(id);
    }

    @Override
    public List<AuthInfo> selectAuthScoreInfoList(AuthInfo authInfo) {
        List<AuthInfo> list = authInfoMapper.selectAuthScoreInfoList(authInfo);
        for (AuthInfo auth : list) {

            String [] split =auth.getBusinessAddress().split(",");

            String address="";
            for(int i = 0; i < split.length;i++){
                String addressName = authInfoMapper.getAddressName(split[i]);
                address+=addressName;
            }

            //如果详情有值就添加上详细信息如果没有就不添加
            if(StringUtils.hasText(auth.getBusinessAddressDetail())){
                address+=auth.getBusinessAddressDetail();
            }
            auth.setBusinessAddress(address);


            // 正则表达式，用于匹配逗号后的一位或多位数字
            String regex = ",(\\d+)"; // 注意这里的 \\d+ 表示一位或多位数字

            // 创建 Pattern 对象
            Pattern pattern = Pattern.compile(regex);

            // 创建 Matcher 对象
            Matcher matcher = pattern.matcher(auth.getIndustry());

            // 检查是否存在匹配
            if (matcher.find()) {
                String industryName = authInfoMapper.getIndustryName(matcher.group(1));
                auth.setIndustry(industryName);
            }
        }

        return list;
    }


    /**
     * 修改合作机构评分
     * @param authInfo
     * @return
     */
    @Override
    public int updateAuthScoreInfo(AuthInfo authInfo) {
        int i = authInfoMapper.updateAuthScoreInfo(authInfo);
        return i;
    }

    @Override
    public int saveOrUpdateScoreAuthInfo(AuthInfo authInfo) {



        //判断前台传没传sid  如果没传sid 证明是新增一条信息
        if(ObjectUtils.isEmpty(authInfo.getSid())){
            //新增
            return authInfoMapper.insertAuthScoreInfo(authInfo);
        }

        return authInfoMapper.updateAuthScoreInfo(authInfo);
    }


}
